home comics writing pictures archive about

ValidationViewModelBase.cs

Language: C#
Last Modified: 2020-06-27 1:58:36 PM UTC
File Size: 2718 bytes
http://www.penguinstew.ca/example/MVVMbase/ViewModelBase/ValidationViewModelBase.cs
���usingSystem;
usingSystemCollectionsGeneric;
usingSystemLinq;
usingSystemText;
usingSystemComponentModel;
namespacePenguinMVVMBaseViewModelBase
{
<summary>
BaseforViewModelwithValidation
<summary>
publicclassValidationViewModelBase:ViewModelBaseIDataErrorInfo
{
regionFields
<summary>
Dictionaryofvalidationfunctionsmappedtopropertynames
<summary>
privateDictionary<stringFunc<string>>m_validationFunctions=newDictionary<stringFunc<string>>;
endregion
regionIDataErrorInfo
<summary>
Returnsanerrormessageforthewholeviewmodel
<summary>
publicstringError
{
get{returnStringEmpty;}
}
<summary>
Returnserrormessageforthegivenitem
<summary>
<paramname=columnName>Theitemtovalidate<param>
<returns>Emptystringifvaliderrormessageotherwise<returns>
publicstringthis[stringcolumnName]
{
get{
Func<string>validationFunction;
ifm_validationFunctionsTryGetValuecolumnNameoutvalidationFunction
{
returnvalidationFunction;
}
else
{
returnstringEmpty;
}
}
}
endregion
<summary>
Testsifallpropertiesonthisviewmodelarevalid
<summary>
<returns>Trueifvalidfalseotherwise<returns>
protectedboolIsValid
{
boolisValid=m_validationFunctionsAllv=>StringIsNullOrEmptyvValue;
returnisValid;
}
<summary>
Addsthegivenvalidationfunctionforthegivenproperty
<summary>
<paramname=propertyName>Nameofthepropertybeingvalidated<param>
<paramname=validationFunction>Thefunctiontovalidatetheproperty<param>
protectedvoidAddValidationstringpropertyNameFunc<string>validationFunction
{
TestpropertyNametomakesureitsavalidproperty
ifTypeDescriptorGetPropertiesthis[propertyName]==null
{
stringmsg=Invalidpropertyname:propertyName;
thrownewArgumentExceptionmsg;
}
m_validationFunctionsAddpropertyNamevalidationFunction;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85